"""
1、什么是闭包函数
一个函数的返回值是另外一个函数，返回的函数调用父函数内部的其他变量，
如果返回的函数在外部被执行，就产生了闭包

2、闭包函数的意义及作用
作用：使函数外部能够调用函数内部定义的变量

3、闭包函数优缺点：
优点：内部函数和局部变量都可以在外部使用
缺点：闭包操作导致整个函数的内部环境，被长久保存，占用大量的内存

上面的介绍太过于笼统, 从我的理解角度来说, 闭包最大的作用就是: 保证变量不被环境污染

但也因为这个特点, 导致闭包会造成 内存泄漏, 这个就要和python的内存管理机制有关了,这里就不展开赘述了.

比如说我们下面来实现一个计数器
"""

# def count(num):
#     return num + 1
#
# a = 1
# a = count(a)
# a = count(a)
# a = count(a)
# print(a)

def counter(num):
    newNum = num

    def func():
        nonlocal newNum
        newNum += 1
        return newNum
    return func

func = counter(1)

a = func()
print(a)

a = func()
print(a)